package com.zjsru.oneDay;

/**
 * @Author: likew
 * @Date: 2022/2/26
 *
 * 增量元素之间的最大差值
 * 0 <= i < j < n 且 nums[i] < nums[j]
 *
 * 输入：nums = [7,1,5,4]
 * 输出：4
 * 解释：
 * 最大差值出现在 i = 1 且 j = 2 时，nums[j] - nums[i] = 5 - 1 = 4 。
 * 注意，尽管 i = 1 且 j = 0 时 ，nums[j] - nums[i] = 7 - 1 = 6 > 4 ，但 i > j 不满足题面要求，所以 6 不是有效的答案。
 *
 * 输入：nums = [9,4,3,2]
 * 输出：-1
 * 解释：
 * 不存在同时满足 i < j 和 nums[i] < nums[j] 这两个条件的 i, j 组合。
 *
 */
public class maximumDifference {
    public int maximumDifference(int[] nums) {
        int len = nums.length;
        int res = -1;
        for (int i = 0; i < len; i++) {
            for (int j = len -1 ; j > i; j--) {
                if(nums[i] < nums[j]){
                    res = Math.max(nums[j] - nums[i],res);
                }
            }
        }
        return res;
    }

    /**
     * 最大差值2
     *
     * @param nums nums
     * @return int
     */
    public int maximumDifference2(int[] nums) {
        int minSoFar = nums[0];
        int maxDiff = -1;

        for (int i = 1; i < nums.length; i++) {
            if (nums[i] > minSoFar) {
                maxDiff = Math.max(maxDiff, nums[i] - minSoFar);
            } else {
                minSoFar = nums[i];
            }
        }
        return maxDiff;
    }

    public static void main(String[] args) {
        maximumDifference maximumDifference = new maximumDifference();
        int[] nums = new int[]{9,4,3,2};
        System.out.println(maximumDifference.maximumDifference(nums));
    }
}
